home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 November / PCWNOV07.iso / Software / Freeware / NSIS 2.29 / nsis-2.29-setup.exe / Examples / TextFunc.nsi < prev    next >
Encoding:
Text File  |  2006-02-10  |  23.8 KB  |  843 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Text Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Text Functions"
  9. OutFile "TextFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12.  
  13. !include "WinMessages.nsh"
  14. !include "TextFunc.nsh"
  15.  
  16. !insertmacro LineFind
  17. !insertmacro LineRead
  18. !insertmacro FileReadFromEnd
  19. !insertmacro LineSum
  20. !insertmacro FileJoin
  21. !insertmacro ConfigRead
  22. !insertmacro ConfigWrite
  23. !insertmacro FileRecode
  24.  
  25. Var HWND
  26. Var INI
  27. Var LOG
  28. Var PROJECT
  29. Var CALLBACK
  30. Var VIEW
  31. Var FUNCTION
  32. Var LINEFIND1
  33. Var LINEFIND2
  34. Var LINEFIND3
  35. Var LINEREAD1
  36. Var LINEREAD2
  37. Var FILEREADFROMEND1
  38. Var LINESUM1
  39. Var FILEJOIN1
  40. Var FILEJOIN2
  41. Var FILEJOIN3
  42. Var TEXTCOMPARE1
  43. Var TEXTCOMPARE2
  44. Var TEXTCOMPARE3
  45. Var CONFIGREAD1
  46. Var CONFIGREAD2
  47. Var CONFIGWRITE1
  48. Var CONFIGWRITE2
  49. Var CONFIGWRITE3
  50. Var FILERECODE1
  51. Var FILERECODE2
  52.  
  53. Page Custom ShowCustom LeaveCustom
  54.  
  55. Function ShowCustom
  56.     InstallOptions::initDialog /NOUNLOAD "$INI"
  57.     Pop $hwnd
  58.     GetDlgItem $0 $HWND 1206
  59.     ShowWindow $0 0
  60.     GetDlgItem $0 $HWND 1208
  61.     ShowWindow $0 0
  62.     GetDlgItem $0 $HWND 1209
  63.     ShowWindow $0 0
  64.     StrCpy $FUNCTION LineFind
  65.     StrCpy $LINEREAD2 10
  66.     StrCpy $TEXTCOMPARE3 FastDiff
  67.     StrCpy $CONFIGREAD1 "$WINDIR\system.ini"
  68.     StrCpy $CONFIGREAD2 "shell="
  69.     StrCpy $FILERECODE2 CharToOem
  70.     InstallOptions::show
  71.     Pop $0
  72. FunctionEnd
  73.  
  74. Function LeaveCustom
  75.     ReadINIStr $0 $INI "Settings" "State"
  76.      ReadINIStr $R0 $INI "Field 1" "State"     
  77.     ReadINIStr $R1 $INI "Field 2" "State"
  78.      ReadINIStr $R2 $INI "Field 3" "State"
  79.      ReadINIStr $R3 $INI "Field 4" "State"
  80.      ReadINIStr $R4 $INI "Field 5" "State"
  81.      ReadINIStr $R5 $INI "Field 6" "State"
  82.     StrCpy $R4 $R4 8
  83.     StrCpy $R5 $R5 8
  84.     StrCpy $6 0
  85.     StrCpy $7 '$${'
  86.     StrCpy $8 'r'
  87.     StrCpy $9 'n'
  88.  
  89.     StrCmp $0 10 Log
  90.     StrCmp $0 9 ViewOrEdit
  91.     StrCmp $0 0 Enter
  92.     goto MainSend
  93.  
  94.     Log:
  95.     Exec 'notepad.exe $LOG'
  96.     Abort
  97.  
  98.     ViewOrEdit:
  99.     StrCmp $FUNCTION FileReadFromEnd 0 Edit
  100.     StrCmp $VIEW '' 0 ViewFileReadFromEndCallback
  101.     GetTempFileName $VIEW $PLUGINSDIR
  102.     StrCpy $7 '$$'
  103.     FileOpen $0 $VIEW w
  104.     FileWrite $0 `Function FileReadFromEndCallback$\r$\n`
  105.     FileWrite $0 `    MessageBox MB_OKCANCEL '$7$$9       "Line"=[$$9]$7\$9$7$$8           "#"=[$$8]$7\$9$7$$7          "-#"=[$$7]' IDOK +2$\r$\n`
  106.     FileWrite $0 `    StrCpy $$R0 StopFileReadFromEnd$\r$\n$\r$\n`
  107.     FileWrite $0 `    Push $$R0$\r$\n`
  108.     FileWrite $0 `FunctionEnd$\r$\n`
  109.     FileClose $0
  110.     StrCpy $7 '$${'
  111.     SetFileAttributes $VIEW READONLY
  112.     ViewFileReadFromEndCallback:
  113.     Exec 'notepad.exe $VIEW'
  114.     Abort
  115.  
  116.     Edit:
  117.     StrCmp $CALLBACK '' +5
  118.     StrCmp $6$R6 '0$R0$R4$R5' showproject
  119.     StrCmp $R6 '$R0$R4$R5' +3
  120.     Delete $CALLBACK
  121.     StrCpy $CALLBACK ''
  122.     StrCpy $R6 '$R0$R4$R5'
  123.  
  124.     #Project#
  125.     StrCmp $6$R0 "01. LineFind" 0 +5
  126.     IfFileExists $CALLBACK +2
  127.     GetTempFileName $CALLBACK $PLUGINSDIR
  128.     FileOpen $0 $CALLBACK w
  129.     goto function
  130.     IfFileExists $PROJECT +2
  131.     GetTempFileName $PROJECT $PLUGINSDIR
  132.     FileOpen $0 $PROJECT w
  133.  
  134.     #Name#
  135.     FileWrite $0 'Name "$FUNCTION"$\r$\n'
  136.     FileWrite $0 'OutFile "$PROJECT.exe"$\r$\n$\r$\n'
  137.  
  138.     #!include#
  139.     StrCmp $R0$R4 '1. LineFindExample5' 0 TextFuncInclude
  140.     IfFileExists '$EXEDIR\WordFunc.nsh' 0 +3
  141.     FileWrite $0 '!include "$EXEDIR\WordFunc.nsh"$\r$\n'
  142.     goto +2
  143.     FileWrite $0 '!include "WordFunc.nsh"$\r$\n'
  144.     FileWrite $0 '!insertmacro WordFind$\r$\n'
  145.     FileWrite $0 '!insertmacro WordFindS$\r$\n'
  146.     FileWrite $0 '!insertmacro WordFind2X$\r$\n'
  147.     FileWrite $0 '!insertmacro WordFind2XS$\r$\n'
  148.     FileWrite $0 '!insertmacro WordFind3X$\r$\n'
  149.     FileWrite $0 '!insertmacro WordFind3XS$\r$\n'
  150.     FileWrite $0 '!insertmacro WordReplace$\r$\n'
  151.     FileWrite $0 '!insertmacro WordReplaceS$\r$\n'
  152.     FileWrite $0 '!insertmacro WordAdd$\r$\n'
  153.     FileWrite $0 '!insertmacro WordAddS$\r$\n'
  154.     FileWrite $0 '!insertmacro WordInsert$\r$\n'
  155.     FileWrite $0 '!insertmacro WordInsertS$\r$\n'
  156.     FileWrite $0 '!insertmacro StrFilter$\r$\n'
  157.     FileWrite $0 '!insertmacro StrFilterS$\r$\n'
  158.     TextFuncInclude:
  159.     IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3
  160.     FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n'
  161.     goto +2
  162.     FileWrite $0 '!include "TextFunc.nsh"$\r$\n'
  163.     FileWrite $0 '!insertmacro $FUNCTION$\r$\n'
  164.     StrCmp $FUNCTION TextCompare +2
  165.     FileWrite $0 '!insertmacro TrimNewLines$\r$\n'
  166.  
  167.     #Section#
  168.     FileWrite $0 '$\r$\nSection -empty$\r$\n'
  169.     FileWrite $0 'SectionEnd$\r$\n$\r$\n'
  170.  
  171.     #Function .onInit#
  172.     FileWrite $0 'Function .onInit$\r$\n'
  173.     StrCmp $R0$R5 "6. TextCompareExample1" 0 TextCompareExample235
  174.     FileWrite $0 '    StrCpy $$R0 ""$\r$\n'
  175.     FileWrite $0 '    $7TextCompare} "$R1" "$R2" "$R3" "$R5"$\r$\n'
  176.     FileWrite $0 '    IfErrors error$\r$\n'
  177.     FileWrite $0 '    StrCmp $$R0 NotEqual 0 +2$\r$\n'
  178.     FileWrite $0 '    MessageBox MB_OK "             Files differ" IDOK +2$\r$\n'
  179.     FileWrite $0 '    MessageBox MB_OK "           Files identical"$\r$\n'
  180.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  181.     goto endoninit
  182.     TextCompareExample235:
  183.     StrCmp $R0$R5 "6. TextCompareExample2" +3
  184.     StrCmp $R0$R5 "6. TextCompareExample3" +2
  185.     StrCmp $R0$R5 "6. TextCompareExample5" 0 TextCompareExample4
  186.     FileWrite $0 '    StrCpy $$R0 "$R1"$\r$\n'
  187.     FileWrite $0 '    StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  188.     FileWrite $0 '    GetTempFileName $$R2$\r$\n'
  189.     FileWrite $0 '    FileOpen $$R3 $$R2 w$\r$\n'
  190.     FileWrite $0 '    FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  191.     FileWrite $0 '    $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  192.     FileWrite $0 '    IfErrors error$\r$\n'
  193.     FileWrite $0 '    Exec "notepad.exe $$R2"$\r$\n'
  194.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  195.     goto endoninit
  196.     TextCompareExample4:
  197.     StrCmp $R0$R5 "6. TextCompareExample4" 0 LineFindExample123456
  198.     FileWrite $0 '    StrCpy $$R0 "$R1"$\r$\n'
  199.     FileWrite $0 '    StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  200.     FileWrite $0 '    GetTempFileName $$R2$\r$\n'
  201.     FileWrite $0 '    FileOpen $$R3 $$R2 w$\r$\n'
  202.     FileWrite $0 '    FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  203.     FileWrite $0 '    $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  204.     FileWrite $0 '    IfErrors error$\r$\n'
  205.     FileWrite $0 '    FileWrite $$R3 "$$\$8$$\$9$$R1 | $$R0$$\$8$$\$9"$\r$\n'
  206.     FileWrite $0 '    $7TextCompare} "$$R1" "$$R0" "$R3" "$R5"$\r$\n'
  207.     FileWrite $0 '    FileClose $$R3$\r$\n'
  208.     FileWrite $0 '    IfErrors error$\r$\n'
  209.     FileWrite $0 '    Exec "notepad.exe $$R2"$\r$\n$\r$\n'
  210.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  211.     goto endoninit
  212.     LineFindExample123456:
  213.     FileWrite $0 '    $7$FUNCTION} "$R1" "$R2" "$R3" "$R4"$\r$\n'
  214.     FileWrite $0 '    IfErrors error$\r$\n'
  215.     FileWrite $0 '    MessageBox MB_YESNO "          Open output file?" IDNO end$\r$\n'
  216.     FileWrite $0 '    StrCmp "$R2" "" 0 +3$\r$\n'
  217.     FileWrite $0 `    Exec 'notepad.exe "$R1"'$\r$\n`
  218.     FileWrite $0 '    goto end$\r$\n'
  219.     FileWrite $0 '    SearchPath $$R2 "$R2"$\r$\n'
  220.     FileWrite $0 `    Exec 'notepad.exe "$$R2"'$\r$\n`
  221.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  222.     endoninit:
  223.     FileWrite $0 '    error:$\r$\n'
  224.     FileWrite $0 '    MessageBox MB_OK "Error"$\r$\n$\r$\n'
  225.     FileWrite $0 '    end:$\r$\n'
  226.     FileWrite $0 '    Quit$\r$\n'
  227.     FileWrite $0 'FunctionEnd$\r$\n$\r$\n'
  228.     #FunctionEnd#
  229.  
  230.  
  231.     #Function CallBack#
  232.     StrCmp $CALLBACK '' 0 close
  233.     function:
  234.     StrCmp $R0 '1. LineFind' 0 +8
  235.     FileWrite $0 'Function $R4$\r$\n'
  236.     StrCmp $R4 "Example1" Example1LF
  237.     StrCmp $R4 "Example2" Example2LF
  238.     StrCmp $R4 "Example3" Example3LF
  239.     StrCmp $R4 "Example4" Example4LF
  240.     StrCmp $R4 "Example5" Example5LF
  241.     StrCmp $R4 "Example6" Example6LF
  242.  
  243.     FileWrite $0 'Function $R5$\r$\n'
  244.     StrCmp $R5 "Example1" Example1TC
  245.     StrCmp $R5 "Example2" Example2TC
  246.     StrCmp $R5 "Example3" Example3TC
  247.     StrCmp $R5 "Example4" Example4TC
  248.     StrCmp $R5 "Example5" Example3TC
  249.  
  250.     Example1LF:
  251.     FileWrite $0 "    $7TrimNewLines} '$$R9' $$R9$\r$\n"
  252.     FileWrite $0 "    StrCpy $$R9 $$R9 '' 2       ;delete first two symbols$\r$\n"
  253.     FileWrite $0 "    StrCpy $$R9 '$$R9$$\$8$$\$9'$\r$\n$\r$\n"
  254.     goto endwrite
  255.     Example2LF:
  256.     FileWrite $0 "    $7TrimNewLines} '$$R9' $$R9$\r$\n"
  257.     FileWrite $0 "    StrCpy $$R9 '$$R9   ~Changed line ($$R8)~$$\$8$$\$9'$\r$\n$\r$\n"
  258.     goto endwrite
  259.     Example3LF:
  260.     FileWrite $0 "    StrCpy $$0 SkipWrite$\r$\n$\r$\n"
  261.     goto endwrite
  262.     Example4LF:
  263.     FileWrite $0 "    FileWrite $$R4 '---First Line---$$\$8$$\$9'$\r$\n"
  264.     FileWrite $0 "    FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n"
  265.     goto endwrite
  266.     Example5LF:
  267.     FileWrite $0 "    ; You can use:$\r$\n"
  268.     FileWrite $0 "    ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n"
  269.     FileWrite $0 "    ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n"
  270.     FileWrite $0 "    ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n"
  271.     FileWrite $0 "    ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n"
  272.     FileWrite $0 "    $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n"
  273.     goto endwrite
  274.     Example6LF:
  275.     FileWrite $0 '    ;(Cut lines from a line to another line (also including that line))$\r$\n'
  276.     FileWrite $0 '    StrCmp $$R0 finish stop$\r$\n'
  277.     FileWrite $0 '    StrCmp $$R0 start finish$\r$\n'
  278.     FileWrite $0 '    StrCmp $$R9 "Start Line$$\$8$$\$9" 0 skip$\r$\n'
  279.     FileWrite $0 '    StrCpy $$R0 start$\r$\n'
  280.     FileWrite $0 '    StrCpy $$R1 $$R9$\r$\n'
  281.     FileWrite $0 '    goto code$\r$\n'
  282.     FileWrite $0 '    finish:$\r$\n'
  283.     FileWrite $0 '    StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 code$\r$\n'
  284.     FileWrite $0 '    StrCpy $$R0 finish$\r$\n'
  285.     FileWrite $0 '    StrCpy $$R2 $$R8$\r$\n'
  286.     FileWrite $0 '    goto code$\r$\n'
  287.     FileWrite $0 '    skip:$\r$\n'
  288.     FileWrite $0 '    StrCpy $$0 SkipWrite$\r$\n'
  289.     FileWrite $0 '    goto output$\r$\n'
  290.     FileWrite $0 '    stop:$\r$\n'
  291.     FileWrite $0 '    StrCpy $$0 StopLineFind$\r$\n'
  292.     FileWrite $0 '    goto output$\r$\n$\r$\n'
  293.     FileWrite $0 '    ;;(Delete lines from a line to another line (also including that line))$\r$\n'
  294.     FileWrite $0 '    ; StrCmp $$R0 finish code$\r$\n'
  295.     FileWrite $0 '    ; StrCmp $$R0 start finish$\r$\n'
  296.     FileWrite $0 '    ; StrCmp $$R9 "Start Line$$\$8$$\$9" 0 code$\r$\n'
  297.     FileWrite $0 '    ; StrCpy $$R0 start$\r$\n'
  298.     FileWrite $0 '    ; StrCpy $$R1 $$R8$\r$\n'
  299.     FileWrite $0 '    ; goto skip$\r$\n'
  300.     FileWrite $0 '    ; finish:$\r$\n'
  301.     FileWrite $0 '    ; StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 skip$\r$\n'
  302.     FileWrite $0 '    ; StrCpy $$R0 finish$\r$\n'
  303.     FileWrite $0 '    ; StrCpy $$R2 $$R8$\r$\n'
  304.     FileWrite $0 '    ; skip:$\r$\n'
  305.     FileWrite $0 '    ; StrCpy $$0 SkipWrite$\r$\n'
  306.     FileWrite $0 '    ; goto output$\r$\n$\r$\n'
  307.     FileWrite $0 '    code:$\r$\n'
  308.     FileWrite $0 '    ;...$\r$\n$\r$\n'
  309.     FileWrite $0 '    output:$\r$\n'
  310.     goto endwrite
  311.     Example1TC:
  312.     FileWrite $0 "    StrCpy $$R0 NotEqual$\r$\n"
  313.     FileWrite $0 "    StrCpy $$0 StopTextCompare$\r$\n$\r$\n"
  314.     goto endwrite
  315.     Example2TC:
  316.     FileWrite $0 "    FileWrite $$R3 '$$8=$$9'$\r$\n"
  317.     FileWrite $0 "    FileWrite $$R3 '$$6=$$7$$\$8$$\$9'$\r$\n$\r$\n"
  318.     goto endwrite
  319.     Example3TC:
  320.     FileWrite $0 "    FileWrite $$R3 '$$8|$$6=$$9'$\r$\n$\r$\n"
  321.     goto endwrite
  322.     Example4TC:
  323.     FileWrite $0 "    FileWrite $$R3 '$$8=$$9'$\r$\n$\r$\n"
  324.     goto endwrite
  325.     endwrite:
  326.     FileWrite $0 '    Push $$0$\r$\n'
  327.     FileWrite $0 'FunctionEnd$\r$\n'
  328.     close:
  329.     FileClose $0
  330.     goto $6
  331.     #FunctionEnd#
  332.  
  333.     showproject:
  334.     StrCmp $R0 '1. LineFind' 0 +3
  335.     ExecWait 'notepad.exe $CALLBACK'
  336.     goto +4
  337.     SetFileAttributes $PROJECT READONLY
  338.     ExecWait 'notepad.exe $PROJECT'
  339.     SetFileAttributes $PROJECT NORMAL
  340.     Abort
  341.  
  342.     MainSend:
  343.     GetDlgItem $0 $HWND 1210
  344.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  345.     GetDlgItem $0 $HWND 1203
  346.     ShowWindow $0 1
  347.     EnableWindow $0 1
  348.     GetDlgItem $0 $HWND 1204
  349.     ShowWindow $0 1
  350.     EnableWindow $0 1
  351.     GetDlgItem $0 $HWND 1205
  352.     EnableWindow $0 1
  353.     GetDlgItem $0 $HWND 1206
  354.     ShowWindow $0 0
  355.     GetDlgItem $0 $HWND 1207
  356.     ShowWindow $0 0
  357.     GetDlgItem $0 $HWND 1208
  358.     ShowWindow $0 0
  359.     GetDlgItem $0 $HWND 1209
  360.     ShowWindow $0 0
  361.     GetDlgItem $0 $HWND 1211
  362.     EnableWindow $0 1
  363.  
  364.     StrCmp $FUNCTION LineFind 0 +5
  365.     StrCpy $LINEFIND1 $R1
  366.     StrCpy $LINEFIND2 $R2
  367.     StrCpy $LINEFIND3 $R3
  368.     goto LineFindSend
  369.     StrCmp $FUNCTION LineRead 0 +4
  370.     StrCpy $LINEREAD1 $R1
  371.     StrCpy $LINEREAD2 $R2
  372.     goto LineFindSend
  373.     StrCmp $FUNCTION FileReadFromEnd 0 +3
  374.     StrCpy $FILEREADFROMEND1 $R1
  375.     goto LineFindSend
  376.     StrCmp $FUNCTION LineSum 0 +3
  377.     StrCpy $LINESUM1 $R1
  378.     goto LineFindSend
  379.     StrCmp $FUNCTION FileJoin 0 +5
  380.     StrCpy $FILEJOIN1 $R1
  381.     StrCpy $FILEJOIN2 $R2
  382.     StrCpy $FILEJOIN3 $R3
  383.     goto LineFindSend
  384.     StrCmp $FUNCTION TextCompare 0 +5
  385.     StrCpy $TEXTCOMPARE1 $R1
  386.     StrCpy $TEXTCOMPARE2 $R2
  387.     StrCpy $TEXTCOMPARE3 $R3
  388.     goto LineFindSend
  389.     StrCmp $FUNCTION ConfigRead 0 +4
  390.     StrCpy $CONFIGREAD1 $R1
  391.     StrCpy $CONFIGREAD2 $R2
  392.     goto LineFindSend
  393.     StrCmp $FUNCTION ConfigWrite 0 +5
  394.     StrCpy $CONFIGWRITE1 $R1
  395.     StrCpy $CONFIGWRITE2 $R2
  396.     StrCpy $CONFIGWRITE3 $R3
  397.     goto LineFindSend
  398.     StrCmp $FUNCTION FileRecode 0 +3
  399.     StrCpy $FILERECODE1 $R1
  400.     StrCpy $FILERECODE2 $R2
  401.  
  402.     LineFindSend:
  403.     StrCmp $R0 "1. LineFind" 0 LineReadSend
  404.     StrCmp $FUNCTION LineFind 0 LineFindSend2
  405.     StrCmp $R4 "Example1" 0 +3
  406.     StrCpy $LINEFIND3 "3:-1"
  407.     goto LineFindSend2
  408.     StrCmp $R4 "Example2" 0 +3
  409.     StrCpy $LINEFIND3 "{5:12 15 -6:-5 -1}"
  410.     goto LineFindSend2
  411.     StrCmp $R4 "Example3" 0 +3
  412.     StrCpy $LINEFIND3 "2:3 10:-5 -3:-2"
  413.     goto LineFindSend2
  414.     StrCmp $R4 "Example4" 0 +3
  415.     StrCpy $LINEFIND3 "10"
  416.     goto LineFindSend2
  417.     StrCmp $R4 "Example5" 0 +3
  418.     StrCpy $LINEFIND3 "1:-1"
  419.     goto LineFindSend2
  420.     StrCmp $R4 "Example6" 0 +3
  421.     StrCpy $LINEFIND3 ""
  422.     goto LineFindSend2
  423.     StrCmp $R4 "Example7" 0 +2
  424.     StrCpy $LINEFIND3 "1:-1"
  425.  
  426.     LineFindSend2:
  427.     StrCpy $FUNCTION LineFind
  428.     StrCmp $LINEFIND2 '/NUL' 0 +2
  429.     StrCpy $LINEFIND2 ''
  430.     GetDlgItem $0 $HWND 1201
  431.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND1"
  432.     GetDlgItem $0 $HWND 1203
  433.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND2"
  434.     GetDlgItem $0 $HWND 1205
  435.     ShowWindow $0 1
  436.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND3"
  437.     GetDlgItem $0 $HWND 1207
  438.     ShowWindow $0 1
  439.     GetDlgItem $0 $HWND 1211
  440.     ShowWindow $0 1
  441.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Edit"
  442.     GetDlgItem $0 $HWND 1212
  443.     ShowWindow $0 1
  444.     StrCmp $LOG '' +2
  445.     EnableWindow $0 1
  446.     GetDlgItem $0 $HWND 1213
  447.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  448.     GetDlgItem $0 $HWND 1214
  449.     SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  450.     GetDlgItem $0 $HWND 1215
  451.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Range"
  452.     GetDlgItem $0 $HWND 1216
  453.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  454.  
  455.     StrCmp $R4 "Example7" 0 +9
  456.     GetDlgItem $0 $HWND 1203
  457.     EnableWindow $0 0
  458.     SendMessage $0 ${WM_ENABLE} 1 0
  459.     SendMessage $0 ${WM_SETTEXT} 1 "STR:/NUL"
  460.     GetDlgItem $0 $HWND 1204
  461.     EnableWindow $0 0
  462.     GetDlgItem $0 $HWND 1211
  463.     EnableWindow $0 0
  464.     abort
  465.  
  466.  
  467.     LineReadSend:
  468.     StrCmp $R0 "2. LineRead" 0 FileReadFromEndSend
  469.     StrCpy $FUNCTION LineRead
  470.     GetDlgItem $0 $HWND 1201
  471.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD1"
  472.     GetDlgItem $0 $HWND 1203
  473.     ShowWindow $0 1
  474.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD2"
  475.     GetDlgItem $0 $HWND 1204
  476.     ShowWindow $0 0
  477.     GetDlgItem $0 $HWND 1205
  478.     ShowWindow $0 0
  479.     GetDlgItem $0 $HWND 1211
  480.     ShowWindow $0 0
  481.     GetDlgItem $0 $HWND 1212
  482.     ShowWindow $0 0
  483.     GetDlgItem $0 $HWND 1213
  484.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  485.     GetDlgItem $0 $HWND 1214
  486.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Line #"
  487.     GetDlgItem $0 $HWND 1215
  488.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  489.     GetDlgItem $0 $HWND 1216
  490.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  491.     Abort
  492.  
  493.     FileReadFromEndSend:
  494.     StrCmp $R0 "3. FileReadFromEnd" 0 LineSumSend
  495.     StrCpy $FUNCTION FileReadFromEnd
  496.     GetDlgItem $0 $HWND 1201
  497.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEREADFROMEND1"
  498.     GetDlgItem $0 $HWND 1203
  499.     ShowWindow $0 0
  500.     GetDlgItem $0 $HWND 1204
  501.     ShowWindow $0 0
  502.     GetDlgItem $0 $HWND 1205
  503.     ShowWindow $0 0
  504.     GetDlgItem $0 $HWND 1209
  505.     ShowWindow $0 1
  506.     GetDlgItem $0 $HWND 1211
  507.     ShowWindow $0 1
  508.     SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  509.     GetDlgItem $0 $HWND 1212
  510.     ShowWindow $0 0
  511.     GetDlgItem $0 $HWND 1213
  512.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  513.     GetDlgItem $0 $HWND 1214
  514.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  515.     GetDlgItem $0 $HWND 1215
  516.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  517.     GetDlgItem $0 $HWND 1216
  518.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  519.     Abort
  520.  
  521.     LineSumSend:
  522.     StrCmp $R0 "4. LineSum" 0 FileJoinSend
  523.     StrCpy $FUNCTION LineSum
  524.     GetDlgItem $0 $HWND 1201
  525.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINESUM1"
  526.     GetDlgItem $0 $HWND 1203
  527.     ShowWindow $0 0
  528.     GetDlgItem $0 $HWND 1204
  529.     ShowWindow $0 0
  530.     GetDlgItem $0 $HWND 1205
  531.     ShowWindow $0 0
  532.     GetDlgItem $0 $HWND 1211
  533.     ShowWindow $0 0
  534.     GetDlgItem $0 $HWND 1212
  535.     ShowWindow $0 0
  536.     GetDlgItem $0 $HWND 1213
  537.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  538.     GetDlgItem $0 $HWND 1214
  539.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  540.     GetDlgItem $0 $HWND 1215
  541.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  542.     GetDlgItem $0 $HWND 1216
  543.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  544.     Abort
  545.  
  546.     FileJoinSend:
  547.     StrCmp $R0 "5. FileJoin" 0 TextCompareSend
  548.     StrCpy $FUNCTION FileJoin
  549.     GetDlgItem $0 $HWND 1201
  550.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN1"
  551.     GetDlgItem $0 $HWND 1203
  552.     ShowWindow $0 1
  553.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN2"
  554.     GetDlgItem $0 $HWND 1204
  555.     ShowWindow $0 1
  556.     GetDlgItem $0 $HWND 1205
  557.     ShowWindow $0 1
  558.     EnableWindow $0 1
  559.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN3"
  560.     GetDlgItem $0 $HWND 1206
  561.     ShowWindow $0 1
  562.     GetDlgItem $0 $HWND 1211
  563.     ShowWindow $0 0
  564.     GetDlgItem $0 $HWND 1212
  565.     ShowWindow $0 0
  566.     GetDlgItem $0 $HWND 1213
  567.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile1"
  568.     GetDlgItem $0 $HWND 1214
  569.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile2"
  570.     GetDlgItem $0 $HWND 1215
  571.     SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  572.     GetDlgItem $0 $HWND 1216
  573.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  574.     Abort
  575.  
  576.     TextCompareSend:
  577.     StrCmp $R0 "6. TextCompare" 0 ConfigReadSend
  578.     StrCmp $FUNCTION TextCompare 0 TextCompareSend2
  579.     StrCmp $R5 "Example1" 0 +3
  580.     StrCpy $TEXTCOMPARE3 "FastDiff"
  581.     goto TextCompareSend2
  582.     StrCmp $R5 "Example2" 0 +3
  583.     StrCpy $TEXTCOMPARE3 "FastDiff"
  584.     goto TextCompareSend2
  585.     StrCmp $R5 "Example3" 0 +3
  586.     StrCpy $TEXTCOMPARE3 "FastEqual"
  587.     goto TextCompareSend2
  588.     StrCmp $R5 "Example4" 0 +3
  589.     StrCpy $TEXTCOMPARE3 "SlowDiff"
  590.     goto TextCompareSend2
  591.     StrCmp $R5 "Example5" 0 +2
  592.     StrCpy $TEXTCOMPARE3 "SlowEqual"
  593.  
  594.     TextCompareSend2:
  595.     StrCpy $FUNCTION TextCompare
  596.     GetDlgItem $0 $HWND 1201
  597.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE1"
  598.     GetDlgItem $0 $HWND 1203
  599.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE2"
  600.     GetDlgItem $0 $HWND 1204
  601.     ShowWindow $0 1
  602.     GetDlgItem $0 $HWND 1205
  603.     ShowWindow $0 1
  604.     EnableWindow $0 0
  605.     SendMessage $0 ${WM_ENABLE} 1 0
  606.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE3"
  607.     GetDlgItem $0 $HWND 1208
  608.     ShowWindow $0 1
  609.     GetDlgItem $0 $HWND 1211
  610.     ShowWindow $0 1
  611.     SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  612.     GetDlgItem $0 $HWND 1212
  613.     ShowWindow $0 1
  614.     GetDlgItem $0 $HWND 1213
  615.     SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile1"
  616.     GetDlgItem $0 $HWND 1214
  617.     SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile2"
  618.     GetDlgItem $0 $HWND 1215
  619.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Option"
  620.     GetDlgItem $0 $HWND 1216
  621.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  622.     abort
  623.  
  624.     ConfigReadSend:
  625.     StrCmp $R0 "7. ConfigRead" 0 ConfigWriteSend
  626.     StrCpy $FUNCTION ConfigRead
  627.     GetDlgItem $0 $HWND 1201
  628.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD1"
  629.     GetDlgItem $0 $HWND 1203
  630.     ShowWindow $0 1
  631.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD2"
  632.     GetDlgItem $0 $HWND 1204
  633.     ShowWindow $0 0
  634.     GetDlgItem $0 $HWND 1205
  635.     ShowWindow $0 0
  636.     GetDlgItem $0 $HWND 1211
  637.     ShowWindow $0 0
  638.     GetDlgItem $0 $HWND 1212
  639.     ShowWindow $0 0
  640.     GetDlgItem $0 $HWND 1213
  641.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  642.     GetDlgItem $0 $HWND 1214
  643.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  644.     GetDlgItem $0 $HWND 1215
  645.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  646.     GetDlgItem $0 $HWND 1216
  647.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  648.     Abort
  649.  
  650.     ConfigWriteSend:
  651.     StrCmp $R0 "8. ConfigWrite" 0 FileRecodeSend
  652.     StrCpy $FUNCTION ConfigWrite
  653.     GetDlgItem $0 $HWND 1201
  654.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE1"
  655.     GetDlgItem $0 $HWND 1203
  656.     ShowWindow $0 1
  657.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE2"
  658.     GetDlgItem $0 $HWND 1204
  659.     ShowWindow $0 0
  660.     GetDlgItem $0 $HWND 1205
  661.     ShowWindow $0 1
  662.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE3"
  663.     GetDlgItem $0 $HWND 1211
  664.     ShowWindow $0 0
  665.     GetDlgItem $0 $HWND 1212
  666.     ShowWindow $0 0
  667.     GetDlgItem $0 $HWND 1213
  668.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  669.     GetDlgItem $0 $HWND 1214
  670.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  671.     GetDlgItem $0 $HWND 1215
  672.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Value"
  673.     GetDlgItem $0 $HWND 1216
  674.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  675.     Abort
  676.  
  677.     FileRecodeSend:
  678.     StrCmp $R0 "9. FileRecode" 0 Abort
  679.     StrCpy $FUNCTION FileRecode
  680.     GetDlgItem $0 $HWND 1201
  681.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE1"
  682.     GetDlgItem $0 $HWND 1203
  683.     ShowWindow $0 1
  684.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE2"
  685.     GetDlgItem $0 $HWND 1204
  686.     ShowWindow $0 0
  687.     GetDlgItem $0 $HWND 1205
  688.     ShowWindow $0 0
  689.     GetDlgItem $0 $HWND 1211
  690.     ShowWindow $0 0
  691.     GetDlgItem $0 $HWND 1212
  692.     ShowWindow $0 0
  693.     GetDlgItem $0 $HWND 1213
  694.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  695.     GetDlgItem $0 $HWND 1214
  696.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Format"
  697.     GetDlgItem $0 $HWND 1215
  698.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  699.     GetDlgItem $0 $HWND 1216
  700.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  701.     Abort
  702.  
  703. ;=Enter=
  704.     Enter:
  705.     StrCmp $R1 '' 0 +3
  706.     StrCpy $0 'Choose InputFile'
  707.     goto send
  708.     IfFileExists $R1 +3
  709.     StrCpy $0 'InputFile is not exist'
  710.     goto send
  711.  
  712.     StrCmp $R0 "1. LineFind" LineFindRead
  713.     StrCmp $R0 "2. LineRead" LineRead
  714.     StrCmp $R0 "3. FileReadFromEnd" FileReadFromEnd
  715.     StrCmp $R0 "4. LineSum" LineSum
  716.     StrCmp $R0 "5. FileJoin" FileJoin
  717.     StrCmp $R0 "6. TextCompare" LineFind-TextCompare
  718.     StrCmp $R0 "7. ConfigRead" ConfigRead
  719.     StrCmp $R0 "8. ConfigWrite" ConfigWrite
  720.     StrCmp $R0 "9. FileRecode" FileRecode
  721.     Abort
  722.  
  723.     LineFindRead:
  724.     StrCmp $R4 "Example7" 0 LineFind-TextCompare
  725.     ${LineFind} '$R1' '/NUL' '$R3' LineFindCallback
  726.     IfErrors error
  727.     StrCmp $R0 StopLineFind 0 done
  728.     StrCpy $0 'stopped'
  729.     goto send
  730.  
  731.     LineFind-TextCompare:
  732.     GetLabelAddress $6 LineFindBack
  733.     goto Edit
  734.     LineFindBack:
  735.     FileClose $0
  736.     StrCmp $R0 "6. TextCompare" Compile
  737.     StrCmp $CALLBACK '' Compile
  738.     ${FileJoin} "$PROJECT" "$CALLBACK" ""
  739.  
  740.     Compile:
  741.     StrCmp $LOG '' 0 +4
  742.     GetTempFileName $LOG $PLUGINSDIR
  743.     GetDlgItem $0 $HWND 1212
  744.     EnableWindow $0 1
  745.     ReadRegStr $0 HKLM "SOFTWARE\NSIS" ""
  746.     IfErrors 0 +2
  747.     StrCpy $0 "${NSISDIR}"
  748.     nsExec::Exec '"$0\makensis.exe" /O$LOG $PROJECT'
  749.     Pop $0
  750.     StrCmp $0 0 0 +6
  751.     ExecWait '$PROJECT.exe' $0
  752.     Delete $PROJECT
  753.     Delete $PROJECT.exe
  754.     StrCpy $PROJECT ''
  755.     goto done
  756.     MessageBox MB_YESNO|MB_ICONEXCLAMATION "Compile error. Open log?" IDNO +2
  757.     Exec 'notepad.exe $LOG'
  758.     StrCpy $0 "Compile Error"
  759.     goto send
  760.  
  761.     LineRead:
  762.     ${LineRead} "$R1" "$R2" $0
  763.     IfErrors error send
  764.  
  765.     FileReadFromEnd:
  766.     ${FileReadFromEnd} "$R1" "FileReadFromEndCallback"
  767.     IfErrors error
  768.     StrCmp $R0 StopFileReadFromEnd 0 done
  769.     StrCpy $0 'stopped'
  770.     goto send
  771.  
  772.     LineSum:
  773.     ${LineSum} "$R1" $0
  774.     IfErrors error send
  775.  
  776.     FileJoin:
  777.     ${FileJoin} "$R1" "$R2" "$R3"
  778.     IfErrors error
  779.     MessageBox MB_YESNO "          Open output file?" IDNO done
  780.     StrCmp $R3 '' 0 +3
  781.     Exec '"notepad.exe" "$R1"'
  782.     goto done
  783.     Exec '"notepad.exe" "$R3"'
  784.     goto done
  785.  
  786.     ConfigRead:
  787.     ${ConfigRead} "$R1" "$R2" $0
  788.     IfErrors error send
  789.  
  790.     ConfigWrite:
  791.     ${ConfigWrite} "$R1" "$R2" "$R3" $0
  792.     IfErrors error
  793.     MessageBox MB_YESNO "          Open output file?" IDNO send
  794.     Exec '"notepad.exe" "$R1"'
  795.     goto send
  796.  
  797.     FileRecode:
  798.     ${FileRecode} "$R1" "$R2"
  799.     IfErrors error
  800.     MessageBox MB_YESNO "          Open output file?" IDNO done
  801.     Exec '"notepad.exe" "$R1"'
  802.     goto done
  803.  
  804.     error:
  805.     StrCpy $0 'error'
  806.     goto send
  807.  
  808.     done:
  809.     StrCpy $0 'Done'
  810.  
  811.     send:
  812.     GetDlgItem $1 $HWND 1210
  813.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
  814.  
  815.     abort:
  816.     Abort
  817. FunctionEnd
  818.  
  819. Function LineFindCallback
  820.     MessageBox MB_OKCANCEL '$$R9       "Line"=[$R9]$\n$$R8           "#"=[$R8]$\n$$R7          "-#"=[$R7]$\n$$R6   "Range"=[$R6]$\n$$R5     "Read"=[$R5]$\n$$R4     "Write"=[$R4]' IDOK +2
  821.     StrCpy $R0 StopLineFind
  822.  
  823.     Push $R0
  824. FunctionEnd
  825.  
  826. Function FileReadFromEndCallback
  827.     MessageBox MB_OKCANCEL '$$9       "Line"=[$9]$\n$$8           "#"=[$8]$\n$$7          "-#"=[$7]' IDOK +2
  828.     StrCpy $R0 StopFileReadFromEnd
  829.  
  830.     Push $R0
  831. FunctionEnd
  832.  
  833. Function .onInit
  834.     InitPluginsDir
  835.     GetTempFileName $INI $PLUGINSDIR
  836.     File /oname=$INI "TextFunc.ini"
  837. FunctionEnd
  838.  
  839. Page instfiles
  840.  
  841. Section -Empty
  842. SectionEnd
  843.